/**
* \file Jeu.h
* \brief Comprend la définition de la strucure Jeu et les entêtes des fonctions et procédures
*/

#ifndef JEU_H_INCLUDED
#define JEU_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>

#include "Parametres.h"
#include "Combinaison.h"

#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

/**
* \struct Jeu
* \brief Définition de la strucure Jeu
* \details Un Jeu comprend le nombre d'essais, le score, la combinaison secrète et trois tableaux :
*           - un pour les combinaisons précédemment testées
*           - un pour le nombre de pions bien placés
*           - un pour le nombre de pions mal placés mais dont la couleur fait partie de la combinaison secrète
*
* \param nbEssais  nombre d'essais restant
* \param score  score du joueur
* \param tabCombinaisonsTestees  pointeur sur un tableau de combinaisons (comprend les combinaisons précédemment testées)
* \param tabNbPionsBienPlaces  pointeur sur un tableau comprenant le nombre de pions bien placés des combinaisons testées (par rapport à la combinaison secrète)
* \param tabNbPionsBonneCouleur  pointeur sur un tableau comprenant le nombre de pions mal placés des combinaisons testées mais dont la couleur fait partie de la combinaison secrète
* \param combinaisonSecrete  combinaison choisie aléatoirement par l'ordinateur (en mode 1 joueur)
*/


typedef struct {
    int nbEssais;
    int score;
    Combinaison* tabCombinaisonsTestees;
    int* tabNbPionsBienPlaces;
    int* tabNbPionsBonneCouleur;
    Combinaison combinaisonSecrete;
} Jeu;


void initJeuTexte (Jeu* jeu, Parametres param, int nbjoueurs);
void initJeuSDL (Jeu* jeu, Parametres param, int nbjoueurs, SDL_Surface* screen, int* applicationOuverte);

void remplirTableaux (Jeu* jeu, Parametres param, Combinaison* comb, int numEssai);

void libereJeu (Jeu* jeu);

void calculScore(Jeu* jeu, Parametres param, int i);

SDL_Surface *chargerImage2(const char* filename);
void appliquerSurface2(SDL_Surface* source, SDL_Surface* destination, int x, int y);


#endif
